package com.maven.sort;

import java.util.Arrays;

/**
 * 插入排序
 * 将一个记录插入到已排好序的序列中，从而得到一个新的有序序列（将序列的第一个数据看成是一个有序的子序列，然后从第二个记录逐个向该有序的子序列进行有序的插入，直至整个序列有序）
 *
 * @Author YongQiang
 * @Date 2021/8/11 11:01
 * @Version 1.0
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {12, 45, 34, 24, 85, 5, 31, 45, 76, 5, 17, 75, 28};
        //swap(arr, 2, 3);
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void sort(int[] arr) {
        if (arr.length < 2) {
            return;
        }

        for (int i = 1; i < arr.length; i++) {
            for (int j = i; j > 0 && arr[j - 1] > arr[j]; j--) {
                    swap(arr, j - 1, j);
            }
        }
    }

    public static void swap(int[] arr, int a, int b) {
        if (a == b) {
            return;
        }
        arr[a] = arr[a] ^ arr[b];
        arr[b] = arr[a] ^ arr[b];
        arr[a] = arr[a] ^ arr[b];
    }
}
